// 日期格式化
export const formatDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
  if (!date) return '';
  // 处理传入的日期（支持时间戳、字符串、Date对象）
  const targetDate = date instanceof Date 
    ? date 
    : new Date(date);
  
  // 若日期无效，返回空
  if (isNaN(targetDate.getTime())) return '';

  const year = targetDate.getFullYear();
  const month = String(targetDate.getMonth() + 1).padStart(2, '0');
  const day = String(targetDate.getDate()).padStart(2, '0');
  const hours = String(targetDate.getHours()).padStart(2, '0');
  const minutes = String(targetDate.getMinutes()).padStart(2, '0');
  const seconds = String(targetDate.getSeconds()).padStart(2, '0');

  // 替换格式字符串中的占位符
  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hours)
    .replace('mm', minutes)
    .replace('ss', seconds);
};

// 数字格式化（保留n位小数）
export const formatNumber = (num, decimalPlaces = 2) => {
  if (num === null || num === undefined) return '0';
  // 处理非数字情况
  const number = parseFloat(num);
  if (isNaN(number)) return '0';
  // 保留指定小数位并格式化
  return number.toFixed(decimalPlaces);
};

// 货币格式化（默认人民币）
export const formatCurrency = (amount, currency = 'CNY') => {
  if (!amount) return '¥0.00';
  
  const number = parseFloat(amount);
  if (isNaN(number)) return '¥0.00';

  switch (currency) {
    case 'CNY':
      return `¥${number.toFixed(2)}`;
    case 'USD':
      return `$${number.toFixed(2)}`;
    case 'EUR':
      return `€${number.toFixed(2)}`;
    default:
      return `${number.toFixed(2)} ${currency}`;
  }
};

// 字符串截断（超出长度显示省略号）
export const truncateString = (str, maxLength = 10, ellipsis = '...') => {
  if (!str || typeof str !== 'string') return '';
  return str.length > maxLength 
    ? `${str.slice(0, maxLength)}${ellipsis}` 
    : str;
};

// 手机号脱敏（中间4位替换为*）
export const maskPhone = (phone) => {
  if (!phone) return '';
  const str = String(phone);
  // 简单校验手机号格式（11位数字）
  if (!/^\d{11}$/.test(str)) return str;
  return str.replace(/^(\d{3})(\d{4})(\d{4})$/, '$1****$3');
};
    